
from langchain.chains import create_extraction_chain_pydantic
from typing import List

from langchain import hub
from langchain_openai import ChatOpenAI
from pydantic import BaseModel  # 统一使用pydantic v2

import os
os.environ["LANGCHAIN_TRACING_V2"] = "false"  # 禁用LangSmith追踪

# 从 hub 拉取一个配置，该配置定义了做指代消解的提示词
obj = hub.pull("wfh/proposal-indexing")

llm = ChatOpenAI(
    api_key="sk-0e687ddcf0164a6fb66c1096447223c4",  # 阿里百炼大模型API获取：https://bailian.console.aliyun.com/?apiKey=1#/api-key
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # 使用文档：https://help.aliyun.com/zh/model-studio/getting-started/what-is-model-studio
    model="qwen-plus",
    temperature=0
    # other params...
)

class Sentences(list):
    # 直接继承list类型，接受纯数组格式
    @classmethod
    def __get_validators__(cls):
        yield cls.validate

    @classmethod
    def validate(cls, v):
        return cls(v)

# 配置LLM输出格式时需要指定响应格式
extraction_llm = llm.with_structured_output(
    Sentences,
    method="json_mode",
)
# 创建一个提取链，将从 hub 拉取的配置与大语言模型连接起来
extraction_chain = obj | extraction_llm

input_text =     """
    近日，国家博物馆的一款
文创“凤冠冰箱贴”
迎来高光时刻
上市仅8个月销量突破100万件
还带动凤冠全系列文创产品
销售额过亿

为了“抢”到它
有人在网上持续 “蹲库存”
有人一大早就到国博门口排队
#抢凤冠冰箱贴的队排到了国博大门外#
话题登上热搜榜

一枚冰箱贴解锁古人“顶流”审美
这款畅销的凤冠冰箱贴
原型是明代孝端皇后九龙九凤冠
其重量达到2320克
共镶嵌100多块宝石
4000多颗珍珠
花丝金龙、点翠花型……
淋漓尽致展现了明代美学风范
在“凤冠冰箱贴”火爆的同时
一顶复刻的凤冠也在网络“出圈”
高二女生用扭扭棒和珍珠复刻精美凤冠
前不久
在杭州第十四中学青山湖学校
一顶手工复刻的精美凤冠
也得到了同学和老师们的称赞

这顶凤冠由该校高二年级
4名女生合作而成
制作前，她们仔细研究了
凤冠各角度的图片
最后决定用扭扭棒来制作

几人商量之后
下单了300根扭扭棒
以及几百颗珍珠
大家分头行动
有人负责珍珠饰品组装
有人负责做凤冠背后的博鬓
最终完美复刻了这顶明代凤冠

网友纷纷点赞
“用扭扭棒复刻凤冠
传统文化在新生代手中玩出新花样”

复刻文物风吹动了年轻人的DNA
“文博热”持续升温
很多年轻人在打卡博物馆
领略文物之美的同时
也用“复刻”的方式
表达自己对中华优秀传统文化的热爱
浙江温州的95后女孩小周
喜欢逛博物馆
自学用黏土复刻文物
她做了100多件微缩文物
跨越十多个朝代

辽宁沈阳的一位手工达人
用平常物件
为女儿复刻了沈阳故宫的院藏珍品
清代黑缎嵌点翠凤戏牡丹女帽
﻿
越来越多的年轻人
正在成为新生代传统技艺传承人
绒花、面塑、剪纸等“老手艺”
因年轻人成了“新网红”
而承载着丰富历史文化信息的文物
也因他们的“复刻”
以新的面貌重回现代生活
"""


# 使用提取链对输入文本进行处理
sentences = extraction_chain.invoke(input_text)
print(sentences)